package com.nchu.ft.common.exception.base;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @className: BaseException
 * @description: 基础异常
 * @author: Li Chuanwei
 * @date: 2024/01/18 17:45
 * @Company: Copyright [日期] by [作者或个人]
 **/

@Data
@AllArgsConstructor
public class BaseException extends RuntimeException{
    private static final long serialVersionUID = 1L;
    /**
     * 所属模块
     */
    private String module;

    /**
     * 错误码
     */
    private int code;

    /**
     * 错误码对应的参数
     */
    private Object[] args;

    /**
     * 错误消息
     */
    private String defaultMessage;

    /**
     * BaseException
     * @param code 错误码
     */
    public BaseException(int code) {
        super("code = " + code);
        this.code = code;
    }

    /**
     * BaseException
     * @param code 错误码
     * @param defaultMessage 错误消息
     */
    public BaseException(int code,String defaultMessage) {
        super(defaultMessage);
        this.code = code;
    }

    /**
     * BaseException
     * @param code 错误码
     * @param args 错误码对应的参数
     */
    public BaseException(int code, Object[] args) {
        this(code);
        this.args = args;
    }

    /**
     * BaseException
     * @param module 所属模块
     * @param code 错误码
     * @param args 错误码对应的参数
     */
    public BaseException(String module, int code, Object[] args) {
        this(code,args);
        this.module = module;
    }

    /**
     * BaseException
     * @param code 错误码
     * @param args 错误码对应的参数
     * @param defaultMessage 错误信息
     */
    public BaseException(int code, Object[] args,String defaultMessage) {
        this(code,defaultMessage);
        this.args = args;
    }
}
